OTP, One-Time Programmable, memory is a device that can be programmed once and only once. The OTP can be a fuse that has low resistance state initially to be programmed into a high resistance state. The OTP can be an anti-fuse that has high resistance state initially to be programmed into a lower resistance state. The OTP can also be a charge-trapping device. By determining certain parameters about whether there is sufficient charge stored in a floating gate or oxide/nitride spacer, a proper initial and programmed state can be determined. The fuse can be an interconnect fuse, such as silicided polysilicon, metal, or metal-gate fuse, or a contact/via fuse. The anti-fuse can be a gate-oxide breakdown fuse in a MOS or dielectric breakdown fuse between two conductors.
There are many applications that require a memory can be programmed a few times, from two times to several hundred times, called MTP, Multiple-Time Programmable memory. This kind of device typically falls between one-time OTP and 10K times programmable memory, such as a flash memory. The process requirements for MTP are also different from OTP and flash memory. Normally, in fabrication, MTP can allow adding one or two more masks, while OTP requires zero add-on mask and flash memory can allow adding at least 7-8 masks over the standard logic processes.
An OTP memory can be used to implement an MTP memory. Such as a memory can be referred to as a pseudo-MTP. By using N OTP cells as one pseudo-MTP cell, each pseudo-MTP cell can be programmed N times by programming into the different OTP cells each time in the pseudo-MTP cell. Alternatively, N OTP memories can be used as one N-time programmable MTP by programming into different OTP memory each time.
FIG. 1 shows a block diagram of a portion of a conventional pseudo-MTP system 10 as one exemplary embodiment. The pseudo-MTP system 10 includes a pseudo-MTP memory 18 built into an OTP memory array 15 having 4 blocks of 256 B (Bytes) each block denoted 15-0 through 15-3, respectively. The first time to program an OTP is to program into the block 0, 15-0. The second time is to program into the block 1, 15-1, and so on. A control system 12 is responsible to keep track of program counts by software or hardware and to generate proper addresses to select the suitable blocks in the OTP memory array 15 for access.
The conventional approach to providing a control system to keep track of the number of times programmed and to generate proper addresses is too complicated and thus undesirable for use with a pseudo-MTP. The overhead for the control system is too high to use pseudo-MTP effectively. Thus, there is a need for improved methods and circuits to keep track of program counts and to generate proper addresses to access an OTP memory to emulate an MTP memory. As a result, a pseudo-MTP memory can be rendered very easy to use and its cost can be relatively low.